using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Net; namespace MonitorAlarm { public class ZjunNewSMSNHandler:ISMSHandler { public string SITEURL = System.Configuration.ConfigurationManager.AppSettings["url"]; /// /// 发送短信 /// /// 用户ID /// 时间戳 /// 加密签名 /// 手机 /// 短信内容 /// 发送时间 /// 扩展码 /// public string SendSMS(string userid, string timestamp, string sign, string mobile, string content, string sendTime, string extno) { string requestUrl = string.Format("{0}/v2sms.aspx", SITEURL); StreamReader reader; Uri requestUri = new Uri(requestUrl); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(requestUri); request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; request.KeepAlive = true; request.Timeout = 1000000; StringBuilder data = new StringBuilder(); data.Append("action=send"); data.Append(string.Format("&userid={0}", userid)); data.Append(string.Format("×tamp={0}", timestamp)); data.Append(string.Format("&sign={0}", sign)); data.Append(string.Format("&content={0}", content)); data.Append(string.Format("&mobile={0}", mobile)); data.Append(string.Format("&extno={0}", extno)); data.Append(string.Format("&sendTime={0}", sendTime)); byte[] byteData = UTF8Encoding.UTF8.GetBytes(data.ToString());//utf编码格式显性转换 request.ContentLength = byteData.Length; //开始请求 using (Stream postStream = request.GetRequestStream()) { postStream.Write(byteData, 0, byteData.Length); }//如果不用using ,就要使用close()释放Stream. //获取响应 WebResponse response = (HttpWebResponse)request.GetResponse(); reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8); //string value = reader.ReadToEnd(); //return value; //或者,上面是直接获得值。下面是使用缓存获取。 StringBuilder builder = new StringBuilder(); char[] buffer = new char[0x400]; int charCount = 0; while ((charCount = reader.Read(buffer, 0, buffer.Length)) > 0) { builder.Append(buffer, 0, charCount); } reader.Close(); return builder.ToString(); } /// /// 上行查询 /// /// 用户ID /// 时间戳 /// 加密签名 /// public string Mo(string userid, string timestamp, string sgin) { string requestUrl = string.Format("{0}/v2callApi.aspx", SITEURL); StreamReader reader; Uri requestUri = new Uri(requestUrl); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(requestUri); request.Method = "post"; request.ContentType = "application/x-www-form-urlencoded"; request.KeepAlive = true; request.Timeout = 100000000; StringBuilder data = new StringBuilder(); data.Append("action=query"); data.Append(string.Format("&userid={0}",userid)); data.Append(string.Format("×tamp={0}",timestamp)); data.Append(string.Format("&sign={0}",sgin)); byte[] bytedata = UTF8Encoding.UTF8.GetBytes(data.ToString()); request.ContentLength = bytedata.Length; Stream poststream = request.GetRequestStream(); poststream.Write(bytedata,0,bytedata.Length); poststream.Close(); WebResponse response = (HttpWebResponse)request.GetResponse(); reader = new StreamReader(response.GetResponseStream(),Encoding.UTF8); string value = reader.ReadToEnd(); return value; } /// /// 状态查询 /// /// 用户ID /// 时间戳 /// 加密签名 /// 查询个数 /// public string Report(string userid, string timestamp, string sgin, string statusNum) { string requestUrl = string.Format("{0}/v2statusApi.aspx", SITEURL); StreamReader reader; Uri requestUri = new Uri(requestUrl); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(requestUri); request.Method = "post"; request.ContentType = "application/x-www-form-urlencoded";//协议 request.KeepAlive = true; request.Timeout = 1000000000; StringBuilder data = new StringBuilder(); data.Append("action=query"); data.Append(string.Format("&userid={0}",userid)); data.Append(string.Format("×tamp={0}",timestamp)); data.Append(string.Format("&sign={0}",sgin)); data.Append(string.Format("&statusNum={0}",statusNum)); byte[] bytedata = UTF8Encoding.UTF8.GetBytes(data.ToString()); request.ContentLength = bytedata.Length; Stream stream = request.GetRequestStream(); stream.Write(bytedata,0,bytedata.Length); stream.Close(); WebResponse response = (HttpWebResponse)request.GetResponse(); reader = new StreamReader(response.GetResponseStream(),Encoding.UTF8); string value = reader.ReadToEnd(); return value; } /// /// 余额查询 /// /// 用户ID /// 时间戳 /// 加密签名 /// public string Balance(string userid, string timestamp, string sgin) { string requestUrl = string.Format("{0}/v2sms.aspx", SITEURL); StreamReader reader=null; Uri requestUri = new Uri(requestUrl); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(requestUri); request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; request.KeepAlive = true; request.Timeout = 10000000; StringBuilder data = new StringBuilder(); data.Append("action=overage"); data.Append(String.Format("&userid={0}",userid)); data.Append(String.Format("×tamp={0}",timestamp)); data.Append(String.Format("&sign={0}",sgin)); byte[] byteData = UTF8Encoding.UTF8.GetBytes(data.ToString()); request.ContentLength = byteData.Length; Stream stream = request.GetRequestStream(); stream.Write(byteData,0,byteData.Length); stream.Close(); WebResponse response = (HttpWebResponse)request.GetResponse(); reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8); String value = reader.ReadToEnd(); return value; } /// /// 修改密码 /// /// 用户ID /// 账号 /// 密码 /// 新密码 /// 重复新密码 /// public string Upassword(string userid, string account, string password, string newpwd, string renewpwd) { string requestUrl = string.Format("{0}/sms.aspx",SITEURL); StreamReader reader; Uri requestUri = new Uri(requestUrl); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(requestUri); request.Method = "post"; request.ContentType = "application/x-www-form-urlencoded"; request.KeepAlive = true ; request.Timeout = 1000000; StringBuilder data = new StringBuilder(); data.Append("action=changespwd"); data.Append(string.Format("&userid={0}",userid)); data.Append(string.Format("&account={0}",account)); data.Append(string.Format("&password={0}",password)); data.Append(string.Format("&newpwd={0}",newpwd)); data.Append(string.Format("&renewpwd={0}",renewpwd)); byte[] bytedata = UTF8Encoding.UTF8.GetBytes(data.ToString()); request.ContentLength = bytedata.Length; Stream poststream = request.GetRequestStream(); poststream.Write(bytedata,0,bytedata.Length); poststream.Close(); WebResponse response = (HttpWebResponse)request.GetResponse(); reader = new StreamReader(response.GetResponseStream()); string value = reader.ReadToEnd(); reader.Close(); return value; } /// /// 非法敏感词查询 /// /// 用户ID /// 时间戳 /// 加密签名 /// 查询内容 /// public string CheckKey(string userid, string timestamp, string sgin, string content) { string requestUrl = string.Format("{0}/v2sms.aspx", SITEURL); StreamReader reader; Uri requestUri = new Uri(requestUrl); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(requestUri); request.Method = "post"; request.ContentType = "application/x-www-form-urlencoded"; request.KeepAlive = true; request.Timeout = 1000000; StringBuilder data = new StringBuilder(); data.Append("action=checkkeyword"); data.Append(string.Format("&userid={0}", userid)); data.Append(string.Format("×tamp={0}", timestamp)); data.Append(string.Format("&sign={0}", sgin)); data.Append(string.Format("&content={0}", content)); byte[] bytedata = UTF8Encoding.UTF8.GetBytes(data.ToString()); request.ContentLength = bytedata.Length; Stream poststream = request.GetRequestStream(); poststream.Write(bytedata, 0, bytedata.Length); poststream.Close(); WebResponse response = (HttpWebResponse)request.GetResponse(); reader = new StreamReader(response.GetResponseStream()); string value = reader.ReadToEnd(); reader.Close(); return value; } } }